from loguru import logger
import sys
import os

LOG_DIR = "logs"
os.makedirs(LOG_DIR, exist_ok=True)

def setup_logger():
    if not logger._core.handlers:
        # 清空默认的 logger（保险起见）
        logger.remove()

        # 1️⃣ 控制台日志
        logger.add(sys.stdout,
                   format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
                          "<level>{level: <8}</level> | "
                          "<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - "
                          "<level>{message}</level>",
                   level="INFO")

        # 2️⃣ 文件日志（自动轮转、压缩）
        logger.add(f"{LOG_DIR}/app.log",
                   format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {name}:{function}:{line} - {message}",
                   level="DEBUG",
                   rotation="10 MB",      # 日志文件大小超过 10MB 自动切分
                   retention="7 days",     # 日志保留 7 天
                   compression="zip")      # 日志压缩格式

        # 3️⃣ 异常追踪日志
        logger.add(f"{LOG_DIR}/error.log",
                   level="ERROR",
                   rotation="5 MB",
                   retention="14 days",
                   backtrace=True,  # 显示完整的错误追踪
                   diagnose=True)   # 自动分析异常

def get_logger():
    setup_logger()
    return logger
